package org.chispa.api.visitors;

import java.security.NoSuchAlgorithmException;
import java.util.Map;

import org.chispa.api.query.ParamWrapper;
import org.chispa.api.util.BadSyntaxException;
import org.chispa.api.util.NoSuitableVisitorException;

public interface ParamVisitor<T,R,S> {
	
	public S visitEncrypt(ParamWrapper<T,R,S> wrap);
	
	public S visitDecrypt(String encrypted);
			
	public R visitHash(ParamWrapper<T,R,S> wrap) throws NoSuitableVisitorException, NoSuchAlgorithmException, BadSyntaxException;
	
	public String visitHashExpr(ParamWrapper<String,String,S> wrap,Map<String,String>parameters) throws BadSyntaxException, NoSuitableVisitorException;

}
